package com.qqtech.qquan.user.service;

import java.util.LinkedHashMap;
import java.util.List;

import com.qqtech.qquan.user.model.UserBaseConfig;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import com.qqtech.core.frame.service.BaseService;
import com.qqtech.qquan.user.model.UserBase;
import com.qqtech.qquan.user.model.UserBaseQuery;
import com.qqtech.qquan.user.model.UserBaseVo;

public interface UserBaseService extends BaseService<UserBase> {
	/**
	 * 加入某个社区的用户数量
	 * @param query
	 * @return
	 */
	public int queryCountNeighbor(UserBaseQuery query);
	/**
	 * 新加入某个社区的用户数量
	 * @param query
	 * @return
	 */
	public int queryCountNeighborIsNew(UserBaseQuery query);	
	/**
	 * 加入某个社区的用户列表
	 * @param query
	 * @param pageable
	 * @return
	 */
	public Page<UserBaseVo> queryPageNeighbor(UserBaseQuery query, Pageable pageable);

	
	/**
	 * 加入某个社区的用户列表
	 * @param query
	 * @param pageable
	 * @return
	 */
	public Page<UserBaseVo> queryPageListJoinCommunity(UserBaseQuery query, Pageable pageable);


	/**
	 * 加入某个社区的用户数量
	 * @param query
	 * @return
	 */
	public int queryCountJoinCommunity(UserBaseQuery query);
	
	/**
	 * 通过帐号查询列表
	 * @param query
	 * @param pageable
	 * @return
	 */
	public Page<UserBaseVo> queryPageListByIdentity(UserBase query, Pageable pageable);

	/**
	 * 后台-用户列表查询- 分页
	 * @param query
	 * @param pageable
	 * @return
	 */
	public Page<UserBaseVo> queryPageList4Admin(UserBaseQuery query, Pageable pageable);

	/**
	 * 后台-用户列表查询- 不分页
	 * @param query
	 * @param pageable
	 * @return
	 */
	public List<UserBaseVo> queryList4Admin(UserBaseQuery query, Pageable pageable);

	/**
	 * 后台-查询数量
	 * @param query
	 * @return
	 */
	public int queryCount4Admin(UserBaseQuery query);
	
	/**
	 * 查询用户列表
	 * @param userIds
	 * @return
	 */
	public List<UserBaseVo> queryListByUserIds(List<Integer> userIds);
	/**
	 * 查询用户map
	 * @param userIds
	 * @return
	 */
	public  LinkedHashMap<Integer, UserBaseVo> queryUserMapListByUserIds(List<Integer> userIds);

	/**
	 * 新加入某个社区的用户数量
	 * @param query
	 * @return
	 */
	public int queryCountNeighborIsNewByCommunityId(UserBaseQuery query);

	/**
	 * 查询用户职业属性列表
	 * @return
	 */
	public List<UserBaseConfig> queryUserConfigProfession();

	/**
	 * 查询用户爱好属性列表
	 */
	public List<UserBaseConfig> queryUserConfigHobby();

	/**
	 * 查询用户美食属性列表
	 */
	public List<UserBaseConfig> queryUserConfigDelicacy();

	/**
	 * 查询用户故乡属性列表
	 */
	public List<UserBaseConfig> queryUserConfigHometown();

	/**
	 * 查询用户娱乐属性列表
	 */
	public List<UserBaseConfig> queryUserConfigEntertainment();


}